<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * share_page_service.php
 *
 * @author  :  Skiychan <developer@zzzzy.com>
 * @created :  2015/4/16
 * @modified:  
 * @version :  0.0.1
 */
class Share_page_service extends MY_Service {
    public function __construct() {
        parent::__construct();
        $this->load->model('share_page_model');
        $this->load->model('user_files_model');
    }

    /**
     * 通过分享码获取分享的文件信息
     * @param $code 分享码
     * @return bool
     */
    public function get_share_link($code) {
        if (empty($code)) return $this->set_error(1003);

        return $this->share_page_model->get_share_link($code);
    }

    /**
     * 更新下载或者访问数量
     * @param $share_id 分享id
     * @param $type 类型1为访问数 2为下载数
     * @return bool
     */
    public function update_count($share_id, $type) {
        if (empty($share_id) || empty($type)) return $this->set_error(1003);

        return $this->share_page_model->update_count($share_id, $type);
    }

    /**
     * 通过分享id获取顶级列表
     * @param $sid 分享id
     * @param $ftype 分类的类型 1文件,2文件夹
     * @return bool
     */
    public function get_share_list($sid, $ftype = NULL) {
        if (empty($sid)) return $this->set_error(1003);

        $where['lid'] = $sid;
        if ($ftype) {
            $where['type'] = (int)$ftype == 1 ? 1 : 2;
        }
        return $this->share_page_model->get_share_list($where);
    }

    /**
     * 获取文件夹的信息 可访问,未删除
     * @param $uid
     * @param $fid
     * @return bool
     */
    public function get_folder_info($uid, $fid, $field = "id,name,pid,deleted,access_denied,path") {
        if (empty($uid) || empty($fid)) return $this->set_error(1003);

        $where = array("deleted" => 0, "access_denied" => 0);
        return $this->user_files_model->get_folder_info($uid, $fid, FALSE, $where, "", $field);
    }

    /**
     * 取文件夹的路径(父级目录)
     * @param string $where
     * @param string $pids
     * @param string $field
     * @return bool
     */
    public function get_folder_path($where = "", $pids = "", $field = "*") {
        if (empty($where) && empty($pids)) return $this->set_error(1003);

        return $this->share_page_model->get_folder_path($where, $pids, $field);
    }

    /**
     * 获取多个文件夹的多个文件
     * @param $uid
     * @param $ids
     * @param string $folder_fields
     * @param bool $all
     * @return bool
     */
    public function get_folder_children($uid, $ids, $folder_fields = "id,name,path,access_denied,deleted", $all = true) {
        if (empty($uid) && empty($ids)) return $this->set_error(1003);

        return $this->user_files_model->get_folder_children($uid, $ids, $all, $folder_fields);
    }

    /**
     * 通过一组文件夹查询文件
     * @param $uid
     * @param $fids 文件夹编号
     * @param string $file_fields 查询的文件字段
     * @param $type int 默认1.exe,2.ek (下载的格式)
     * @param $m_path bool 默认否 是否查询文件路径
     * @return null
     */
    public function get_folder_files($uid, $fids, $file_fields = "", $type = 1, $m_path = false) {
        if (empty($uid) || (empty($fids)))
            return $this->set_error(1003);

        return $this->share_page_model->get_folder_files($uid, $fids, $file_fields, $type, $m_path);
    }

    /**
     * 查询文件信息
     * @param $uid
     * @param $fids
     * @param string $file_fields
     * @param $type int 默认1.exe,2.ek (下载的格式)
     * @param $m_path bool 默认否 是否查询文件路径
     * @return array || null
     */
    public function get_files_info($uid, $fids, $file_fields = "", $type = 1, $m_path = false) {
        if (empty($uid) || (empty($fids)))
            return $this->set_error(1003);

        return $this->share_page_model->get_files_info($uid, $fids, $file_fields, $type, $m_path);
    }

    /**
     * 检查下载的文件id是否在分享列表里面
     * @param $fid
     * @param $share_code
     * @return mixed
     */
    public function check_file_in_share($fid, $share_code) {
        if (empty($fid) || empty($share_code)) {
            return $this->set_error(1003);
        }
        return $this->share_page_model->check_file_in_share($fid, $share_code);
    }

    /**
     * 更新单个文件的分享下载次数和标记文件已下载
     * @param $fid
     * @param $code
     * @return mixed
     */
    public function update_download($fid, $code) {
        if (empty($fid) || empty($code)) {
            return $this->set_error(1003);
        }
        $this->share_page_model->update_downloaded($fid, $code);
    }

    /**
     * 删除列表的文件
     * @param $uid
     * @param $fids
     * @param string $type
     * @return bool
     */
    public function delete_sharelist_file($uid, $fids, $type="1") {
        if (empty($uid) || empty($fids))
            return $this->set_error(1003);

        return $this->share_page_model->delete_sharelist_file($uid, $fids, $type);
    }

    /**
     * 当前文件夹是否包含在顶级分享的文件夹
     * @param $path 文件夹祖级文件夹id(字符串,或数组)
     * @param $share_pids 分享的顶级文件夹id组
     * @param $fid 当前文件夹id
     * @return bool
     */
    public function path_in_fids($path, $share_pids, $folder_id = "") {
        if (empty($path) || (empty($share_pids) && empty($folder_id)))
            return;

        //将path切分成数组
        if (!is_array($path))
            $path = explode(",", $path);

        //顶层文件夹分割
        if (!is_array($share_pids)) {
            $share_pids = explode(",", $share_pids);
        }

        //合并文件夹路径
        if (!empty($folder_id))
            array_push($path, (string)$folder_id);

        $in_path = false;
        //文件夹是否在祖父级分享的目录里面
        foreach ($share_pids as $key => $sid) {
            //分享组的文件夹，是否在文件的文件夹的path中
            $in_path = in_array($sid, $path);

            //如果是分享的目录的子孙目录
            if (true == $in_path) {
                //记录路径,剃除分享的文件夹前的path
                foreach ($path as $k => $v) {

                    if ($v == $sid) break;

                    unset($path[$k]);
                    continue;
                }
                //重新排序路径的id
                //sort($path);
                break;
            }
        }

        //如果不在路径中则返回FALSE
        if (false == $in_path) return;

        //sort($path);
        //$path = array_values($path);
        $path = implode(',',$path);
        return $path;
    }
}

/* End of file share_page_service.php */
/* Location:  */